<?php

	Class Instalaciones{
		private $Clientes, $Conexion, $Fecha, $InfoCliente;	//info cliente No_
		private $ElemLedger, $Almacen, $ErrorInst, $ElemStock;
		
		//FORMULARIO DE APORTACION COMERCIAL
		private $NombreFiscal, $Poblacion, $Cif, $Direccion, $Consumo;
		private $NombreComercial, $Cp, $ActualCafe, $Tlf, $TipoCliente;
		private $Contribucion, $Observaciones, $TipoContrato, $TipoRecibo;
		private $Comentarios, $DatosDistribuidor, $NumCustomer, $OrderNo;
		private $EstadoMaq, $TipoSerie, $GrupoMaq, $TipoMaq, $NumSerie;
		public  $NLinea, $error, $errFichero, $directorio;
		
		
		public function __construct(){
			$this->error="";
			$this->errFichero="";
			$this->directorio="";
			$this->NLinea=10000;
			$this->Conexion = new Conexion(); //Creacion objeto conexion
			$this->getDatosDistribuidor();
		}
		
		public function getFecha(){
			return $this->Fecha = date("d")." / ".date("m")." / ".date("o");
		}
		
		public function getAlmacen(){
			return $this->Almacen;
		}
		
 		public function getDatosDistribuidor(){
			$DatosDistribuidor = $this->Conexion->getDatosDistribuidor();
 			$this->NumCustomer=$DatosDistribuidor['Customer WEB No'];
 			$this->OrderNo=$DatosDistribuidor['Order No'];
 			$this->Almacen=$DatosDistribuidor['Almacen Relacionado'];
 		}
		
  		public function existeAlmacen(){
  			if($this->Conexion->existeAlmacen($this->Almacen)){
  				return true;
  			}
  			else{
  				$this->ErrorInst="No se ha podido saber el Almacen";
  			}
  		}
		
		//FUNCIONES APORTACION COMERCIAL
		public function getClientes(){
			$this->Clientes = $this->Conexion->getClientes($this->NumCustomer);
			return $this->Clientes;
		}
		
		public function mostrarInfo($id){
			$this->InfoCliente = $this->Conexion->getInfoCliente($id); 
			return $this->InfoCliente;
		}
		
		public function datosPersonales($post){
			$exito=true;
			if(isset($post['nombreFiscal']) && $post['nombreFiscal']!=''){
				$this->NombreFiscal=$post['nombreFiscal'];
			}
			else{
				$this->error="Necesita rellenar el nombre";
				return false;
			}
				
			if(isset($post['poblacion']) && $post['poblacion']!=''){
				$this->Poblacion=$post['poblacion'];
			}
			else{
				$this->error="Necesita rellenar la ciudad";
				return false;
			}
				
			if(isset($post['cif']) && $post['cif']!=''){
				$this->Cif=$post['cif'];
			}
			else{
				$this->error="Necesita rellenar el cif";
				return false;
			}
			
			if(isset($post['direccion']) && $post['direccion']!=''){
				$this->Direccion=$post['direccion'];
			}
			else{
				$this->error="Necesita rellenar la direccion";
				return false;
			}
				
			if(isset($post['consumoSemana']) && $post['consumoSemana']!=''){
				$this->Consumo=$post['consumoSemana'];
			}
			else{
				$this->error="Necesita rellenar el consumo";
				return false;
			}
			return $exito;
		}
		
		public function extension($tipoDoc){
			$permitida=false;
			$tipos = array('.gif', '.jpg', '.doc', '.pdf','.rar','.zip');
			for ($i=0;$i<count($tipos); $i++) {
				if ($tipos[$i]==$tipoDoc) {
					$permitida=true;
				}
			}
			return $permitida;
		}
		
		public function gestionArchivos($files){
			$exito=false;
			$nombreArchivo = $_FILES["file_info"]["name"];
			$tipoArchivo = $_FILES["file_info"]["type"];
			$temporalArchivo = $_FILES["file_info"]["tmp_name"];
			$tamanioArchivo = $_FILES["file_info"]["size"];
				
			$tipoDoc = substr($nombreArchivo, strrpos($nombreArchivo,'.'));
				
			if($this->extension($tipoDoc)){
				$directorio="//172.168.100.65/htdocs/Archivos";
				$nombreArchivo2 = date('d').date('m').date('y').date('H').date('i').date('s')."_";
				$nombreArchivo2 .= $this->NumCustomer;
				$nombreArchivo2 .= $tipoDoc;
					
				if(@move_uploaded_file($temporalArchivo, $directorio."/".$nombreArchivo2)){
					$this->directorio=$directorio."/".$nombreArchivo2;
					$this->errFichero="Archivo subido correctamente";
					$exito=true;
				}
				else{
					if($_FILES["file_info"]["error"] > 0 ){
						switch ($_FILES['file_info']['error']){
							case 1: $this->errFichero='File exceeded maximum server upload size';			break;
							case 2: $this->errFichero='File exceeded maximum file size';					break;
							case 3: $this->errFichero='File only partially uploaded';	     				break;
							case 4: $this->errFichero='No file uploaded';									break;
						}
					}
				}
			}
			return $exito;
		}
		
		public function nuevoCliente($post,$files){
			$this->Conexion->updateOrder(); //<--Incrementa el numero de order
			//Nuevo cliente
			$this->NombreComercial=$post['nombreComercial'];
			$this->Cp=$post['cp'];
			$this->ActualCafe=$post['actualCafe'];
			$this->Tlf=$post['tlf'];
			$this->TipoCliente=$post['tipo_cliente'];
			$this->Contribucion=$post['contribucion'];
			$this->Observaciones=$post['observaciones'];
			$this->Comentarios=$post['comentarios'];
			$codCliente=$post['id_cliente'];
			$tipoInsert='1';
			$euros='0';
			$exito=false;
			
			if($this->datosPersonales($post)){
					//Recibo
					if(isset($post['tipo_contrato']) && $post['tipo_contrato']!=''){
	 					$this->TipoContrato=$post['tipo_contrato'];
	 					if($this->TipoContrato=="recibo"){
	 						if(isset($post['tipo_recibo']) && $post['tipo_recibo']!=''){
	 							$this->TipoRecibo=$post['tipo_recibo'];
	 						}
	 						else{
	 							$this->error="Necesita seleccionar tipo recibo";
	 							return false;
	 						}
	 					}
					}
					else{
						$this->error="Necesita seleccionar tipo contrato";
						return false;
					}
					
					if(isset($_FILES['file_info']['name']) && $_FILES['file_info']['name']!=''){ //Si esta vacio
						if($this->gestionArchivos($files)){
							$nombreArchivo=$this->directorio;
						}
						else{
							$nombreArchivo="";
						}
					}
					else{
						$nombreArchivo="";
					}
			
					if($this->Conexion->insertCliente($this->NombreFiscal,$this->Poblacion,$this->Cif,$this->Direccion,$this->Consumo,
												      $this->NombreComercial,$this->Cp,$this->ActualCafe,$this->Tlf,$this->TipoCliente,
											 	      $this->Contribucion,$this->Observaciones,$this->TipoContrato,$this->TipoRecibo,
												      $this->Comentarios,$this->OrderNo,$this->NumCustomer,$tipoInsert,$euros,$codCliente,
													  $nombreArchivo)){
						
						if($this->insertMaquinaAport($post,$tipoInsert)){
							$Emails=new Info();
							$Emails->confirmacion($_POST);
							$this->error="El contacto se ha introducido correctamente!";
							$exito=true;
						}
					}
					else{
						$this->error="El nuevo contacto no se ha podido introducir";
					}
				}
			
			return $exito;
		}
		
		public function insertMaquinaAport($post,$tipoInsert){
			$exito=false;
			$totalMaq=count($post['tipo_maquina']);
			$cant='1';
			$und='';
			for ($i=0; $i<$totalMaq; $i++) {
				if($post['tipo_maquina'][$i]!="0"){
					$this->EstadoMaq=$post['estado_maq'][$i];
					$this->TipoSerie=$post['tipo_serie'][$i];
					$this->NumSerie=$post['num_serie'][$i];
					$this->GrupoMaq=$post['grupo_maquina'][$i];

					if($post['tipo_maquina'][$i]=="No Encontrada"){
						$this->TipoMaq="No Encontrada";
					}
					else{
						$this->TipoMaq=$this->getNombreItem($post['tipo_serie'][$i]);
					}
					
					//Si datos validos
					if($this->Conexion->insertMaq($this->OrderNo,$this->Almacen,$this->EstadoMaq,$this->NumSerie,
												  $this->TipoMaq,$this->TipoSerie,$this->NLinea,$tipoInsert,$this->GrupoMaq,$cant,$und)){
						
						$this->NLinea=10000+$this->NLinea;
						$this->error="Maquina insertada con exito";
						$exito=true;
					}
					else{
						$this->error="No se ha podido insertar la maquina";
					}
				}
			}
			return $exito;
		}
		
		public function updateApor($post){
			$exito=false;
			if($this->datosPersonales($post)){
				/*COMPROBADOS LOS CAMPOS DIFERENCIAMOS SI ES UN UPDATE O UN INSERT*/
				$emilUpdate=new Info();
				$emilUpdate->solicitudUpdateAport($_POST);
				$this->error="Solicitud enviada";
				$exito=true;
			}
			else{
				$this->error="NO Solicitud";
			}
			return $exito;
		}
		
		/*Pagina Stock envio de maquina encontrada*/
		public function insertMaqStock($post){
			$nombreMaq=$this->getNombreItem($post['codigo']);
			$numSerie=$post['numSerie'];
			$codigo=$post['codigo'];
			$exito=false;
			
			if($numSerie!=0){
				if($this->Conexion->insertStock($nombreMaq,$numSerie,$codigo,$this->Almacen)){
					$this->error="La m&aacute;quina se ha introducido correctamente";
					$exito=true;
				}
			}
			else{
				$this->error="Debe introducir el n&uacute;mero de serie de la m&aacute;quina";
			}
			return $exito;
		}
		
		//FUNCIONES ULTIMOS MOVIMIENTOS Y STOCK
		public function getElementosLedger(){
			if($this->existeAlmacen()){
				$this->ElemLedger = $this->Conexion->getMovimientos($this->Almacen);
				return $this->ElemLedger;
			}
		}
		
		/*Funcion para sacar el Stock del almacen del distribuidor y cuando el campo [Open]=1*/
		public function getElementosStock(){
			if($this->existeAlmacen()){
				$this->ElemStock = $this->Conexion->getElemStock($this->Almacen);
				return $this->ElemStock;
			}
		}
		
		/*Funcion para obtener los nombres de los productos*/
		public function getNombreItem($itemNo){
			return $this->Conexion->getNombreItem($itemNo);
		}
		
		/*Funcion para obtener la cantidad de producto en el stock*/
		public function getCantidadItem($itemNo){
			if($this->existeAlmacen()){
				return $this->Conexion->getCantidadItem($itemNo,$this->Almacen);
			}
		}
		
		/*Funcion para obtener los numeros de serie de un codigo concreto una maquina concreta*/
		public function getNumSerie($itemNo){
			if($this->existeAlmacen()){
				return $this->Conexion->getNumSeries($itemNo,$this->Almacen);
			}
		}
		
		/*Funcion que saca todos los numeros de series de las maquinas existentes en el almacen de un distribuidor concreto*/
		public function getSeries(){
			if($this->existeAlmacen()){
				return $this->Conexion->getTotalSeries($this->Almacen);
			}
		}
	}

?>